Relational databases are widely used to maintain data. Currently, a vast majority of the world's data stores are based on the relational data-model. Accordingly, access is most often dominated by variants of the SQL (Structured Query Language) standard. For example, many corporations maintain organizational, product and customer data in SQL compatible databases. SQL is a language used to interrogate and process data in a relational database. Originally developed for use in connection with mainframes, most database management systems (DBMSs) that are designed for client/sever environments support SQL.
Ad hoc or non-standardized queries can be used in connection with relational DBMSs to identify information based upon defined criteria. In other words, an ad hoc query can be composed to answer a question when a need arises. For example, an ad hoc query can be composed to identify all people that reside within the geographical boundary of a particular zip code.
However, for a number of reasons, many database administrators refrain from granting users ad hoc query capability. One reason is that an ad hoc query having many complicated parameters can be written and executed such that the performance of the server hosting the database is compromised. Another reason is that of security. Often times a database includes personal or sensitive data (e.g., social security and credit card account numbers). Granting users ad hoc permissions can sometimes compromise the security and confidentiality of this information.
For these reasons, database administrators frequently employ “stored procedures” which in effect are built-in queries where only small parts (e.g., parameters) are changeable. For example, a stored procedure can be defined to identify customers having a place of business in a particular zip code. In accordance with this exemplary stored procedure, the user would only have to input the value of the zip code in order to obtain the result(s). In other words, a user would call into the stored procedure and pass along a desired zip code as an identified parameter.
Stored procedures are a cornerstone feature of the SQL standard and are similar to functions in typical programming languages, which enable database administrators to predetermine the queries executed against the database. This query predetermination can provide an additional level of security and performance predictability in the database behavior. Many users of relational databases rely exclusively on stored procedures thereby disallowing the ability for arbitrary (e.g., ad hoc) queries to be consumed by the database.
In the recent past, there has been an insurgence of new technology called XML (Extensible Markup Language) that describes a method to represent data and to send data to partners for business applications. XML allows designers to create their own customized tags that can enable the definition, transmission, validation, and interpretation of data between applications and between organizations.
Accordingly, XML query languages have been created specifically to query the XML data. By definition, these languages have been unable to query a relational data-model database. The lack of this query ability creates a disparity in that these data access methods and/or languages are incompatible with most existing data stores. For example, a large amount of data is maintained in relational databases but corporations would like to access it via XML. By doing so, the corporations can develop applications and interact with their business partners utilizing XML. In other words, a disparity in compatibility exists since there are XML data formats, relational data formats, XML query languages and relational query languages.
Recent developments have been directed to computerized systems and methods for transforming the rowset (e.g., SQL) results of a query into a hierarchical (e.g., XML) data stream. However, an unsolved problem exists directed to employing non-relational (e.g., XML) query languages to access data via stored procedures thereby obtaining the results from a relational (e.g., SQL) database. Therefore, there is a substantial unmet need for a system that can employ an XML query language to obtain information from a relational data store. More particularly, what is needed is a system and/or method that permits a non-relational query language to be employed to call a stored procedure within a relational data store to access data therein.